<?php
/**
 * View_User
 *
 * Класс предназначен для отображения информации, связанной с пользователем
 * @author Дмитрий Кузьма <kouzma.d@gmail.com>
 * @version 1.0
 */
class View_User {
  /**
   * Метод возвращает сообщение для вывода через alert (JS), если такое имеется
   *
   * @param string $message - текст сообщения
   * @param integer $messageType - тип сообщения
   * @param bool $useDefaultFirstRow - выводить или нет вводную строку "Возникли ... ошибки:"
   */
	  public static function getUserMessageJs($message, $messageType = -1, $useDefaultFirstRow = true) {
	  	Service_Debug::setDebug();
	    $toReturn = '';
	    if ($messageType > 0) $toReturn = $message;
	    if ($messageType < 0) {
	      if ($useDefaultFirstRow) $toReturn .= Service_Translate::getText('Обнаружены слудующие ошибки') . ":\n";
	      $toReturn .= $message;
	    }
	    return $toReturn;
	  }

  /**
   * Метод возвращает сообщение, если такое имеется
   *
   * @param string $message - текст сообщения
   * @param integer $messageType - тип сообщения
   */
	  public static function getUserMessage($message, $messageType = -1, $useDefaultFirstRow = true) {
	  	Service_Debug::setDebug();
	    $toReturn = '';
	    if ($messageType > 0) $toReturn = self::getSuccessMessage($message);
	    if ($messageType < 0) $toReturn = self::getErrorMessage($message, $useDefaultFirstRow);
	    return $toReturn;
	  }

  /**
   * Метод выводит сообщение пользователю, если такое имеется
   *
   * @param string $message - текст сообщения
   * @param integer $messageType - тип сообщения
   */
  public static function showUserMessage($message, $messageType = -1, $useDefaultFirstRow = true) {
  	Service_Debug::setDebug();
    echo self::getUserMessage($message, $messageType, $useDefaultFirstRow);
  }

  /**
   * Метод выводит сообщение пользователю об успехе
   *
   * @param string $message - текст сообщения
   */
  private static function getSuccessMessage($message) {
  	Service_Debug::setDebug();
    return '<div class="userSuccess">' . $message . '</div>';
  }

  /**
   * Метод выводит сообщение пользователю об ошибке
   *
   * @param string $message - текст сообщения
   */
  private static function getErrorMessage($message, $useDefaultFirstRow = true) {
  	Service_Debug::setDebug();
    if ($useDefaultFirstRow) return '<div class="userError"><b>' . Service_Translate::getText('Обнаружены слудующие ошибки') . '</b>:<br />' . $message . '</div>';
    else return '<div class="userError">' . $message . '</div>';
  }

  /**
   * Выводит начало сообщения об ошибки - чисто верстка
   *
   */
  public static function showErrorMessageStart() {
  	echo '<div class="userError">';
  }

  /**
   * Выводит конец сообщения об ошибки - чисто верстка
   *
   */
  public static function showErrorMessageFinish() {
  	echo '</div>';
  }

  /**
   * Метод выводит имя пользователя
   *
   * @param array $arrUser - массив с данными пользователя
   */
 	public static function showUserName($arrUser, $maxLengthOfName = false) {
 		Service_Debug::setDebug();
		echo self::getUserName($arrUser, $maxLengthOfName);
  }

  /**
   * Метод выводит имя пользователя, обрезая длину имени при необходимости
   *
   * @param array $arrUser
   * @param integer $maxLengthOfName
   * @return string
   */
  public static function getUserName($arrUser, $maxLengthOfName = false) {
  	Service_Debug::setDebug();
  	$retText = '';
  	if ($maxLengthOfName === false) $retText .= $arrUser['first_name'] . '&nbsp;' . $arrUser['last_name'];
		else
			if ($maxLengthOfName <= Service_Function::utf8_strlen($arrUser['first_name'])) $retText .= Service_Function::utf8_substr($arrUser['first_name'], 0 , $maxLengthOfName) . '...';
			else
				if ($maxLengthOfName < Service_Function::utf8_strlen($arrUser['first_name']) + Service_Function::utf8_strlen($arrUser['last_name']) + 1) {
					$retText .= $arrUser['first_name'] . '&nbsp;' . Service_Function::utf8_substr($arrUser['last_name'], 0 , $maxLengthOfName - Service_Function::utf8_strlen($arrUser['first_name'])-1) . '...';
				}
				else $retText .= $arrUser['first_name'] . '&nbsp;' . $arrUser['last_name'];
		return $retText;
  }

  /**
   * Метод выводит имя пользователя со ссылкой на его профиль
   *
   * @param array $arrUser - массив с данными пользователя
   */
 	public static function showLinkUserName($arrUser, $maxLengthOfName = false) {
 		Service_Debug::setDebug();
		echo self::getLinkUserName($arrUser, $maxLengthOfName);
  }

  /**
   * Метод выводит имя пользователя со ссылкой на его профиль
   *
   * @param array $arrUser - массив с данными пользователя
   */
 	public static function getLinkUserName($arrUser, $maxLengthOfName = false) {
 		Service_Debug::setDebug();
		$text = '<a href="' . self::getUserHref($arrUser) . '" onclick="" class="userLink" title="';
		$text .= self::getUserName($arrUser, false);
		$text .= '">';
		$text .= self::getUserName($arrUser, $maxLengthOfName);
		$text .= '</a>';
		return $text;
  }
  
  /**
   * Метод выводит аватару пользователя
   *
   * @param array $arrUser - массив с данными пользователя
   * @param array $sizePrefix - префикс размера изображения
   */
 	public static function showLinkUserAvatar($arrUser, $sizePrefix = 's') {
 		Service_Debug::setDebug();
 		echo '<a href="' . self::getUserHref($arrUser) . '">';
			echo '<img src="' . W_IMAGES . $arrUser['pic_folder'] . $sizePrefix . '_' . $arrUser['pic_file'] . '" alt="';
			  self::showUserName($arrUser);
			echo '" />';
		echo '</a>';
  }

  /**
   * Метод передает аватару пользователя
   *
   * @param array $arrUser - массив с данными пользователя
   * @param array $sizePrefix - префикс размера изображения
   */
 	public static function getUserAvatar($arrUser, $sizePrefix = 's') {
 		Service_Debug::setDebug();
 		$str = '';
 		$str .= '<a href="' . self::getUserHref($arrUser) . '">';
			$str .= '<img src="' . W_IMAGES . $arrUser['pic_folder'] . $sizePrefix . '_' . $arrUser['pic_file'] . '" alt="';
			  $str .= $arrUser['login'];
			$str .= '" />';
		$str .= '</a>';
		return $str;
  }

  /**
   * Метод возвращает название роли пользователя
   *
   * @param mixed $role - идентификатор роли или название роли
   * @return string
   */
	public static function getRoleName($role) {
		Service_Debug::setDebug();
	  if (is_numeric($role)) {
  	  switch ($role) {
  	    default: return 'администратор';
  	  }
	  }
	  else return $role;
	}

}
?>